window.onload=function(){

    document.getElementById("send-id").onclick = function() {
      var dataObj = new Object();
      dataObj["userAccountNumber"] = "duanyonghong";
      dataObj["userName"] = "段永红";
      dataObj["date"] = "2023-12-22 09:22:01";

      var formData;
      //formData = new FormData(document.getElementById("form-id")); //直接获取网页form表单数据
      
      formData = new FormData(); //手动创建表单
      formData.append("userAccountNumber", "duanyonghong"); //手动添加表单属性
      formData.append("userName", "段永红"); //手动添加表单属性
      formData.append("interestArr", "游泳"); //手动添加表单属性数组
      formData.append("interestArr", "打球"); //手动添加表单属性数组
      formData.append("date","2023-12-22 09:22:01");
     
      var fileArr = document.getElementById("fileArr");  //手动添加附件
      for(var i = 0; i < fileArr.files.length; i++) { //获取附件数组
        formData.append("fileArr", fileArr.files[i]);
      }

      //for (var key of formData.keys()) {alert(key);} //遍历formData所有属性key
      
      if(!!!this.xhr) this.xhr = new XMLHttpRequest(); //创建http
      else if(this.xhr.readyState >= 1 && this.xhr.readyState < 4) {
        alert('正在请求请勿连续点击');
        return;
      };
      
      let urlParams = new URLSearchParams(dataObj).toString(); //将对象属性转换为url路径参数
      this.xhr.open("POST","http://10.1.90.41:8010/test/test",true);//创建请求,true异步|false同步
      this.xhr.withCredentials = true; //当发送跨域请求时，携带cookie信息
      //this.xhr.timeout = 2000; //n秒后超时
      
      this.xhr.setRequestHeader('token', 'token123'); //请求头参数
      //this.xhr.setRequestHeader("Content-type","application/json"); //设置请求格式: application/x-www-form-urlencoded,application/json
      //this.xhr.send(JSON.stringify(dataObj)); //发送json字符串数据、请求格式要求：application/json
      this.xhr.send(formData); //发送表单格式,请忽略Content-type
      
      //this.xhr.responseType = "json"; //返回值类型设置以json格式返回(必须小写),默认字符串格式
      this.xhr.onreadystatechange = function() { //影响结果
          //this.readyState = 0:请求未初始化, 1:服务器连接已建立,2:请求已收到,3:正在处理请求,4:请求已完成且响应已就绪
          console.log("readyState: %s", this.readyState); //接口调用过程中状态变化
          if (this.readyState != 4) return; //4为请求完成
          if(this.status >= 200 && this.status < 300){	//请求结果状态,正常200到299都属于成功
              if(this.responseType == '') { //默认字符串格式返回
                console.log("返回字符串格式: %s", this.responseText);//后台返回来的字符串数据
                console.log("字符串转json对象、并获取指定属性：", JSON.parse(this.responseText)["success"]); //转换为json对象并获取指定属性
              } else if(this.responseType == 'json') { //json格式返回
                console.log("获取json数据的指定属性：%s",this.response["success"]); //转换为json对象并获取指定属性
              }
          }
      };
      this.xhr.ontimeout = function(){alert('超时、请稍后重试！！');}
      this.xhr.onerror = function(){alert('网络异常！！')}; 
    }

    document.getElementById("cancel-id").onclick = function(){ //取消发送触发
      let sendObj = document.getElementById("send-id");
      !!sendObj.xhr && sendObj.xhr.abort(); //取消发送
      console.log('取消发送！！');
    }
    

    //axios方式实现ajax、底层基于es6的Promise来实现的
    document.getElementById('sendAxios').onclick = function() {
      var formData = new FormData(); //手动创建表单
      //formData = new FormData(document.getElementById("form-id")); //直接获取网页form表单数据
      formData.append("userAccountNumber", "duanyonghong"); //手动添加表单属性
      formData.append("userName", "段永红"); //手动添加表单属性
      formData.append("interestArr", "游泳"); //手动添加表单属性数组
      formData.append("interestArr", "打球"); //手动添加表单属性数组
      formData.append("date","2023-12-22 09:22:01");
     
      var fileArr = document.getElementById("fileArr");  //手动添加附件
      for(var i = 0; i < fileArr.files.length; i++) formData.append("fileArr", fileArr.files[i]); //获取附件数组
      

      axios.defaults.baseURL = "http://127.0.0.1:8010"; //设置通用地址,可忽略
      axios({
        method: 'POST'
        ,url: '/test/test'
        //,params: {"userName":"张三"} //路径参数、数组方式目前无法传递未研究
        ,headers: {//请求头参数
            'token':'tokenCanshu' //token参数
            //,'Content-type':'application/json'  //json格式默认
            //,'Content-type':'application/x-www-form-urlencoded' //表单格式、不支持文件
            ,'Content-type':'multipart/form-data'  //表单格式、支持文件
        }
        //,data: {"userName":"张三","interestArr": ["打球","游泳"]} //请求体参数
        ,data: formData //表单对象发送要求格式：multipart/form-data、并且是POST请求
      }).then((res) => {
          console.dir(res); //成功回调、自动封装为js对象了、具体F12查看
      }).catch(error => {
          console.dir(error);//失败回调、自动封装为js对象了、具体F12查看
      });
    }
    
}

//导入fs
const fs = require('fs');

//创建文件或替换
fs.writeFile('./testFileName.txt','你好啊我是文件里面的内容!', 
    s => { //创建完回调函数
        if(s) { //失败这里就有失败信息、成功就:s=null
            console.error('创建失败');
            return;
        }
        console.log('创建成功');
    }
)
